package com.yao.mybatis.sqlsource;

import com.yao.mybatis.utils.GenericTokenParser;
import com.yao.mybatis.utils.ParameterMappingTokenHandler;

/**
 * 讲DynamicSqlSource和RawSqlSource都解析成StaticSqlSource
 *
 * @author Administrator
 */
public class SqlSourceParser {
    public StaticSqlSource parse(String sql){
            ParameterMappingTokenHandler tokenHandler = new ParameterMappingTokenHandler();
            GenericTokenParser tokenParser = new GenericTokenParser("#{", "}", tokenHandler);
            // tokenParser.parse(sqlText)参数是未处理的，返回值是已处理的（没有${}和#{}）
            String sqlText = tokenParser.parse(sql);
            return new StaticSqlSource(sqlText, tokenHandler.getParameterMappings());
        }
    }
